package com.qfedu.openplateform.gateway.config;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

/**
 * ApplicationContextHolder 的类加入到容器中
 *
 *
 * 实现implements ApplicationContextAware，在生成ApplicationContextHolder bean 加入对应容器的时候，会通过setApplicationContext 方法
 * 将整个容器的 上下文对象ApplicationContext 传进来，让ApplicationContextHolder bean  持有
 *
 *
 * ApplicationContextHolder 就持有了 容器上下文对象，容器上下文可以获取所有的 bean
 *
 */
@Component
public class ApplicationContextHolder  implements ApplicationContextAware {

    // 属于该类
    public   static  ApplicationContext applicationContext;


    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {

        // 让当前 ApplicationContextHolder 对象持有  上下文 applicationContext
        ApplicationContextHolder.applicationContext = applicationContext;
    }

    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }
}
